package com.example.chessbattleplatform.web.chess_rooms.dataService.impl;

import com.baomidou.mybatisplus.extension.service.IService;
import com.example.chessbattleplatform.web.chess_rooms.Pojo.Enum.RoomUserColorEnum;
import com.example.chessbattleplatform.web.chess_rooms.Pojo.Enum.RoomUserEnum;
import com.example.chessbattleplatform.web.chess_rooms.Pojo.mappers.RoomMember;

import java.util.List;


public interface RoomMemberDataServiceInterface extends IService<RoomMember> {

    //查询 房间成员信息
    List<RoomMember> getListUserRoomMember(String roomUuid);

    //用户id 查询
    RoomMember getUserRoomMember(Long userid);

    // 加入 房间的用户
    Boolean joinRoom(RoomMember roomMember);

    // 退出 房间的用户
    Boolean leaveRoom(Long userid);

    // 统计 房间人数据
    Long CountNumberRoomMembers(String roomUuid);

    // 更新 房间的用户
    Boolean updateRoomMember(RoomMember roomMember);

    // 退出并关闭等待房间
    Boolean quitAndCloseRoom(String roomUuid);

    //判断是否为房主
    Boolean ToDetermineWhetherYouAreTheHomeowner(Long userId);

    //查询玩家是否在等待房间内
    Boolean IsWhetherPlayerWaitingRoom(String roomId,Long userId);

    // 查询 房间成员 中是否有指定 用户阵营 信息
    // BLUE(黑色),
    // RED(红色),
    // GAME_OVER(游戏结束or观众)
    Boolean IsUserCampsWaitingRooms(String roomId, RoomUserColorEnum userColor);

    // 查询 房间成员 中是否有指定 成员类型 信息
    // 房主 ROOM_OWNER("ROOM_OWNER"),
    // 玩家 GAMER("GAMER"),
    // 观众 SPECTATOR("SPECTATOR");
    Boolean IsUserEnumWaitingRooms(String roomId, RoomUserEnum memberType);
}
